Network-based game system

ABSTRACT

A network-based game system includes a load balancer configured to receive a first request and a second request from a game client application running on a computer device. The first request comprises game logic information and the second request includes persistent game-state information. The network-based game system also includes a plurality of game servers in connection with the load balancer, wherein each of the game servers stores a game engine application configured to produce a first response to the first request and a game-system-interface (GSI) server in connection with the plurality of game servers wherein the GSI stores a GSI program configured to produce a second response to the second request.

TECHNICAL FIELD

This application relates to a game system, more specifically, a network-based game system.

BACKGROUND

Interactive online digital entertainment has advanced on many fronts in recent years, especially with respect to video gaming. For example, users can login to websites to find an opponent and then a game of chess or a card game in the virtual world. As a player may be competing against another player, the communication is bidirectional. However, not all video games can be played online. For a game of chess where time to make a move does not have an immediate and consequential effect on the outcome, players have time to contemplate the next move, counter move, game strategy and so on and the game does not need to provide real-time feedback. However, in a majority of real-time video games, time needed to make a decision and act upon that decision is relatively short so that players involved feel a sense of realism and engagement. In such a real-time game, action must occur in close proximity to real life events. Real-time action is required for the action games, simulation games such as flight simulators and sport games. In most cases persistent communications, scoring, player attributes, etc. cannot be offered together with real-time realism and engagement. Scalability is another challenge to the network-based game application. While some existing network-based systems can handle tens of thousands of game players, it is a serious challenge to provide game applications in real time to millions of players reliably and simultaneously. An additional requirement for a network-based game system is that the network communications with the game client applications must be secure and not easily be attacked by internet hackers.

SUMMARY

In one aspect, the present invention relates to a network-based game system including a load balancer configured to receive a first request and a second request from a game client application running on a computer device, wherein the first request includes game logic information and the second request includes persistent game-state information; a plurality of game servers in connection with the load balancer, wherein each of the game servers stores a game engine application configured to produce a first response to the first request; and a game-system-interface (GSI) server in connection with the plurality of game servers, wherein the GSI stores a GSI program configured to produce a second response to the second request.

In another aspect, the present invention relates to a network-based game system, including a load balancer configured to receive a first request from a game client application running on a computer device, wherein the first request includes game logic information; a plurality of game servers in persistent network connections with the load balancer, wherein each of the game servers stores a game engine application configured to produce a first response to the first request and to produce a second request, wherein the second request includes persistent game-state information; and a game-system-interface (GSI) server in non-persistent network connections with the plurality of game servers, wherein the GSI stores a GSI program configured to produce a second response to the second request.

In yet another aspect, the present invention relates to a method of providing a game over a computer network including receiving a first request and a second request by a load balancer from a game client application running on a computer device in a persistent network connection with the load balancer, wherein the first request includes game logic information and the second request comprises persistent game-state information; producing a first response to the first request by a game engine application running on one of a plurality of game servers, wherein the plurality of game servers are in persistent network connections with the load balancer; and producing a second response to the second request by a GSI program running on a game-system-interface (GSI) server. Implementations of the system may include one or more of the following. The load balancer can communicate with the computer device in a persistent network connection. The load balancer can communicate with the plurality of game servers in persistent network connections. The load balancer can route the first request or the second request to a game sever in accordance with the status of the plurality of the game servers. The GSI server can communicate with the plurality of game servers non-persistent network connections. At least one of the plurality of game servers can receive the second request and to send a third request to the GSI server in response to the second request. The at least one of the plurality of game servers can receive a third response from the GSI server in response to the second request and send the second response to the computer device in response to the third response. The first request includes one or more of game animation information, game statistics, or game chats. The second request includes one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list. The network-based game system can further include a data base in communication with the GSI server. The GSI program can update information in the data base or retrieve information from the database in response to the second request. The game engine program or the GSI program can send a message to authenticate identification associated with a game client application. The identification includes user identification, game session identification, or game room identification. The game engine application can communicate with the game client application in encrypted serialized messages.

Embodiments may include one or more of the following advantages. The disclosed system and methods provide a simplified game architecture for a network-based game system. A game client application running one a game player's computer device can communicate with a load balancer in the network-based game system in a persistent network connection. The load balancer routes requests from the game client application to a game engine application on a game server. The game engine application makes requests and sends information to a game system interface (GSI) when needed. The game client application no longer needs to communicate with the GSI in non-persistent network connections. The elimination of the non-persistent network connection simplifies the communications between the game client application and the network-based system. A single persistent connection to a game server at a consistent gateway IP address is much easier to maintain than multiple connections to many different possible services in some network-based game systems.

In addition, the persistent network connections between the game client application and the load balancer provide more robust communications between the game client application and the network-based game system. The persistent network connections allow instantaneous information exchanges with the game client applications in real time. The persistent network connections have much lower probability of connection failures than non-persistent network connections. The persistent network communications allow a large number of client game applications to be played without network latency at multiple remote locations.

The disclosed system and methods also improves network security for communications with the game client applications. The game client applications and the network-based game system can communicate in persistent and authenticated network connections. The communications are first validated and authenticated by game engine applications on the game servers. The GSI receives requests or updates from the game client applications only through the game engine applications after the validation and authentication, that is, the communications to and from GSI are internal to the network-based game system. This architecture design removes the need for network security for non-persistent network connections between GSI and game client applications in some network-based game systems. Furthermore, the persistent network connection between the game client application and the game engine application are stateful. The game engine application is thus much better equipped to validate and authenticate requests from the game claim applications. As a result, the network security is much improved for the network-based game system.

Furthermore, the disclosed system and methods also improve the efficiency and scalability of the network-based game system. The requests from a large number of game client applications can be intelligently routed by a load balancer to a plurality of game servers in accordance with the up/down status and the load levels of the game servers. The game servers in the network-based game system can thus be more efficiently utilized and network traffic can be minimized. The network-based game system can also be more easily scaled up by increasing the number of game servers to accommodate the communication needs with increased number of game client applications.

Details of one or more embodiments are set forth in the accompanying drawing and in the description below. Other features, objects, and advantages of the invention will become apparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system diagram of a network-based game system.

FIG. 2 is a block diagram of an improved game architecture compatible with the network-based game system.

FIG. 3 is a flow diagram for the network-based game system.

DETAILED DESCRIPTION

Referring to FIG. 1, a network-based game system 100 can support game applications running on remote computer devices 106 and 107 through a communication network 105. The communication network 105 can include various wired, wireless, satellite communication arrangements including but not limited to a wide area network such as the Internet, a local area network, a cellular phone network under various communication protocols Such as 2G, 2.5G and 3G, Global System for Mobile Communications (GSM), General Packet Radio Service (GPRS), EDGE, Code Division Multiple Access (CDMA), Wideband CDMA. TD-SCDMA, Universal Mobile Telecommunications System (UMTS), etc. city wide wires network such as WiMax, and wireless local area network (WLAN) such as Wi-Fi wireless communication standards such as IEEE 802.11, Wi-Max, and IEEE 806.16, and others. The computer devices 106 and 107 can include personal computers, portable digital assistance (PDA) devices, cell phones, digital image capture devices, and dedicated game devices such as Microsoft XBOX, SONY PlayStation OR PS2, Nintendo gaming machines, GameCube, or GameBoy.

The network-based game system 100 can include a load balancer 115, one or more web servers 121-124, one or more session servers 130, one or more load balancers 250, a plurality of game servers 141-143, and a database 150. The data base 150 can for example be implemented as a storage area network. The one load balancers 250 can be designed to ensure redundancy and reliability for the network-based game system 100. The network-based game system 100 can be operated by a game service provider such as Gaia Interactive Inc. based in California, USA. The network-based game system 100 can provide a website such as www.gaiaonline.com on the Internet to host a game community and provide various game services such as games, discussion groups, forums, and e-mails etc. A player can sign up at the website to own his or her own account. The player can also personalize his or her own profiles. The player can also set up a list of buddies. He or she may play with some of the buddies in multi-player network-based games. As described below, the network-based system 100 can store game statistics and other game properties associated with a player in a networked storage device, available and updatable to the game player.

A game player can access the web site of the game service provider using computer devices 106 and 107 with a web browser application executed on the computer devices 106 or 107. The web browser applications are available from several manufacturers including Internet Explorer™ from Microsoft, Netscape™ from AOL, and Firebox™ from Mozilla and so on. Various Internet browsing applications are available to cellular phones, PDAs, game consoles which are also compatible with the disclosed system and methods.

FIG. 2 depicts interactions between various components in a game architecture 200 compatible with the network-based game system 100. Game client applications 206 and 207 reside on the computer devices 106 and 107. The game client applications 206 and 207 can be executed by a plug-in to the web browser application. The game client applications 206 and 207 can include game logic for one or more games and enable animation display for the games. The web-browser plug-in can enable the web browser to audio or video messages and properly display vector graphics images independent of the manufacturer or the version of the web browser. The web-browser plug-in can allow animations to be properly scaled to as web browser window is resized. The game client application 206 or 207 can use the web browser's communication API (Application Programming Interface) to communicate with the network-based game system 100.

For example the computer devices 106 and 107 can be installed with Flash plug-in produced by Macromedia Inc. Flash is a bandwidth friendly and browser independent vector-graphic animation technology. Animation is choreographed using one or more sequential timelines in which actions and interactions are defined. The Flash plug-in can be downloaded, installed, and attached to a web browser. The Flash plug-in allows the web browser to play SWF (Small Web Format) movie clips in the web-browser it finds referenced in a webpage. Each SWF movie clip can include a unique game. The SWF movie clips contain the game logic as well as animations, images, and other effects. The SWF movie clip can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in and libraries of APIs developed for the network-based game system 100. Macromedia's Flash MX and Freehand applications and other Flash files can also be viewed through a Web browser plug-in (or the Flash player) or multimedia applications that access the player directly. Flash files can include sound. Flash can use the FLA files for source files and SWF files for the Flash movies. Flash files are space-efficient and suitable for interactions, comparing to other movie files (AVI, MPG. etc.) files.

The game client application 206 or 207 can be written in one or more SWF movie clips to be loaded in the web browser. Each game client application 206 or 207 can correspond to one or more games. The SWF movie clips include game logic as well as animations, images, and other effects. The SWF movie clips can communicate with servers in the network-based game system 100 using the library of functions provided by Macromedia's Flash plug-in. A library of APIs can be developed for the SWF movie clips that can be re-used in multiple games.

In accordance with the present specification, the game client applications 206 and 207 communicate with the network-based game system 100 via one or more load balancers 250 in persistent communication channels such as socket network connections. A load balancer 250 can monitor the status of the game servers 141-143, for example, whether one of the game servers 141-143 is on or off. The load balancers 250 can monitor the load level of the game servers 141-143. The load balancers 250 can direct a request from a game client application 206 or 207 to a game server 141-143 that is available and has relatively low load level so that the capacity of the game servers 141-143 can be efficiently utilized.

The communications between the game client applications 206 and 207 and the game engine applications 301-303 (via the load balancers 250) can include following two types:

a) Game logic information that does not need to be stored permanently on data storage beyond a game session. In a soccer game, for example, the game logic information can include positions of a soccer-ball on a soccer field as the ball is being kicked around; the positions or the postures of a player's avatar as the player moves across the soccer field, and the instant message chat communication among the players in a game room, including text-based chats and emoticons. The game logic information can be handled by the game engines alone.

b) Persistent game-state information that is usually of use beyond a single game session. The persistent game-state information may include for example, user account information, attributes and statistics associated with a game player such as his or her game scores, game currency or game credits that the player owns, an inventory for tools and weapons owned by a player, an update of a buddie list, etc. The persistent game-state information is handled by the GSI program 400, and can be updated and stored in the data base 150.

Not all the information handled by the GSI program 400 needs to be stored beyond a game session. For example, the GSI program 400 can store game room ID and game session ID in a local memory, which are typically cleared after the end of a game session. But the game room ID and the game session ID can be stored for hours and can be retrieved during this period of time for authentication of users and game client applications 206 and 207.

In general, the game engine application 301-303 can instantaneously respond to calls from the game client applications 206 and 207 to ensure real-time performance of the game sessions. The GSI program 400 on the other hand can respond to a game engine application 301-303 in the typical time frame of 0.001-0.1 milliseconds, depending on network latency and the processing time. The GSI program 400 can reliably respond to requests, but not necessarily in real time. The GSI program 400 can store the persistent game-state information into the player's account on the database 150, which can include game status information such that the player can retrieve the information after the specific game session is closed.

The game client applications 206 and 207 can securely communicate with a load balancer 250 and thus with the game engine application 301-303, and the GSI program 400 in encrypted serialized messages. Each game engine application 301-303 can choose to communicate in specific serialization communication protocol such as PHP (Hypertext Preprocessor), XML, AMF, XML-RPC (Remote Procedure Call), etc. A library of serialization communication protocols is stored on a computer device connected to the network-based game system 100 available to the game engine application 301-303 and the GSI program 400. The library provides rules for encryption and decryption of the serialized messages under different protocols. The communication protocols can be independent of the game logic, the game rooms, and the game engine applications. In fact, the disclosed system allows different game client applications 206 and 207 using many different communication protocols to enter the same game room at the same time. A call from a game client application 206 or 207 can include a token that specifies gaming protocols such as PHP, XML, AMF, XML-RPC, etc. The load balancer 250 can also direct a call from a game client application 206 or 207 to a game server 141-143 that can interpret the protocols required by the specific call.

The game server 141, 142, or 143 can keep an open socket connection with the computer device 106 or 107. The game engine application 301-303 and the game client application 206 or 207 can send and receive TCP/IP messages to and from each other by writing and reading data through the socket connection. Messages can be sent and received from either the game server 141 (or 142 and 143) or the computer device 106 or 107 at any time. The persistent network connection allows instantaneous two-way communications and guarantees the games updated in real time without network latency during a game session. The persistency of the network connection between the game client application 206 or 207 and the game engine application 301-303 typically last through a game session. A loss of connection in the persistent communication can be interpreted as that the game client application 206 or 207 has left the game. A stop in the two-way communications between the game client application 206 or 207 and the game engine application 301-303 (via the load balancer 250) can be interpreted by the game engine application 301-303 as that the game client application 206 or 207 is leaving the game session.

The game engine application 301-303 is compatible with different server software implementations such as Sushi Multiuser Server available at “www.wok2.de”, ElectroServer 3 available at “www.electrotank.com”, and Terazona Network Engine available at “www.zona.net”. The network-based game system 100 can include game engine applications 301-303 developed using different server software. Different server software may require serialized messages encrypted under different serialization protocols.

During a game session, each game client application 206 or 207 can be supported by a game engine application 301-303 with a persistent connection in the network-based game system 100. The game client application 206 or 207 can pull information related to the specific game or game session from the game engine application 301-303. The game engine application 301-303 can also update the game client application 206 or 207 with animations and short-term game logic information that do not need to be permanently stored. The game client application 206 or 207 can request the saving of the game results. The game engine application 301-303 can validate the data to be saved on the data base 150 by the GSI program 400 and returns whether or not the saving is succeeded. The game engine application 301-303 can also gather information about all the players in the same game room and broadcast the information to the game room. The game engine application 301-303 can establish the players in the same game room as peers. The game engine application 301-303 can conduct peer-to-peer communications in real time by broadcasting a player's actions or events over that player's game client application to other peers game client applications in the same game room. Each game client application 206 or 207 in the game room can construct a message and request the game engine application 301-303 to forward to the message another peer or all the peers in the same game room.

A load balancer 250 can control the load balance and the distribution of players and game sessions in the game rooms across multiple game servers 141-143. A game engine application 301-303 includes programmed game logic for each game and can control the game flow. The game engine application 301-303 can decide when to retrieve user information from the GSI program 400 and store information to the GSI program 400. Many game players each running a game client applications can play in a common game session. The game players can, for example, compete with each other in a ball game or fishing game in the game session. The game players playing can also be depicted as playing in a same game room. In the multi-player game sessions, the game engine application 301-303 can broadcast updates to many game client applications 206 and 207 running on many computer devices 106, 107 that are in the same game room.

The GSI program 400 serves as an interface for the game servers 141-143 to the database 150.The game engine application 301-303 can communicate with the GSI program 400 in trusted intra-network connections. The game engine application 301-303 can contact the GSI program 400 to verify that game rooms for a given game are not duplicated by accident. During the game sessions, the game client applications 206 and 207 updates the game engine application 301-303 with game statistics and game player information such as game scores, game equipment, game location. The game engine application 301-303 can pass the persistent game-state information to the GSI program 400. Tokens and validation keys can also be passed from the GSI program 400 to the game engine application 301-303 and in turn to the game client applications 206 and 207 to make sure different actions are occurring in the correct order and are not being spoofed by the client game application 206 or 207. The game client application 206 or 207 may be required to return the tokens and keys combined with other variables to ensure that the game's integrity has not been compromised. The game engine application 301-303 can communicate with the GSI application 400 over its own local host loop-back IP address (since the GSI program 400 can be installed and run on the same computer as the game engine application 301-303), eliminating network latency between the game engine application 301-303 and the GSI program 400.

In other embodiments, the game engine application 301-303 can act as a controller that can monitor the loads of game servers 141-143 and the status of the game rooms. The game engine application 301-303 can intelligently assign the game client applications 206 and 207 an appropriate game room according to the loads of the game servers 141-143 and the status of the game rooms. The game engine application 301-303 can also store game room ID, user ID, and game session ID in a local memory for verifying game client applications 206 and 207 without necessarily going through the GSI program 400.

The server 450 that the GSI resides can be one of the web servers 121-123, one of the game servers 141-143, or another server connected to the computer network in the network-based game system 100. In other words, the GSI program 400 can reside on any of the web servers 121-123 and the game servers 141-143. Using GSI program 400 as an interface is beneficial because the game servers 141-143 and the data base 150 can be modified independently without affecting each other in system upgrades.

Referring to FIG. 3, to start a game, a game player can access a game service website such as www.gaiaonline.com operated by Gaia Interactive Inc., based in California, USA. The game player can initiate a game session by clicking a game client application 206 or 207 on a computer device 106 or 107 (step 310). The game client application 206 or 207 can be presented on a web page presented by a web browser application. In the present invention a game session refers to an active connection between the client game application 206 or 207 and other programs such as game engine application 301-303 stored in the network-based game system 100. The game client application 206 or 207 can also be in the form of stream media (e.g. Flash SWF) so a game can keep loading as game-play starts. In some embodiments, a game session can be initiated by a game client application 206 or 207 by contacting and authenticating with a game engine application 301-303 via a load balancer 250 without the need to access a webpage.

The game client application 206 or 207 sends a request to a load balancer 250 to request long in the user using a password (step 310). The load balancer 350 directs the authorization request to a game engine application 301-303 on a game server 141-143 (step 330). The game engine application 301-303 passes the request to GSI program 400 (step 340). The GSI program 400 verifies the user ID and password using information retrieved from the data base 150. The GSI program 400 creates a new session ID for the user at login (step 350). If the game room exists, the GSI can assign the game client application 206 or 207 to an existing one. If the game room does not exist, the GSI program 400 creates, validates the game room, and stores the game room ID. The GSI program 400 returns validation message to the game engine application 301-303 to confirm the authenticity of the user ID and the game session ID.

The validation message can include the game session ID and game room ID in association with the user ID. The game engine application 301-303 hold the user ID and the game session ID for future identification purposes. The game engine application 301-303 communicates a validation message to the game engine applications 301-303 about the game session ID and which game room the user has been assigned to (step 360). The game client application enters the game room. The game client application 206 or 207 then requests the load of a game (step 360). For example, a SWF file is loaded by the plug-in at the request of the web browser. The SWF is executed by a Flash Plugin. Instructions inside the SWF tell it to connect to the game engine 301-303. Instructions inside the SWF also instruct it to display the game environment and run the game interactions.

GSI only really is an authentication provider. It can return a session id for the GE server to use, and validate a username/password, but our current thinking is that it will do less work than it does now for tracking a user throughout the games. The game engine application is responsible for this now.

During the game session, the game client applications 206 or 207 can update the game engine application 301-303 with game statistics, and persistent game-state information such as scores, equipment, and the amount of currency owned by the user. The game engine application 301-303 can pass the persistent game-state information to the GSI program 400 (step 370), which in turn can update the information in the data base 150.

Although specific embodiments of the present invention have been illustrated in the accompanying drawings and described in the foregoing detailed description, it will be understood that the invention is not limited to the particular embodiments described herein, but is capable of numerous rearrangements, modifications, and substitutions without departing from the scope of the invention. The following claims are intended to encompass many such modifications. For example, the game logic can also be remotely stored on a server in connection with the network-based game system, instead of on a computer device 106 or 207. The server may be able to store more complex game logic than game client applications. The remotely stored game logic can be activated remotely in real-time with secure processing on the servers or downloaded to the game players' computer devices 106 and 107 before a session starts. Moreover, each game engine application can support one or many game client applications and thus many game logics.

Furthermore, the game engine applications 301-303 can be implemented on different game platforms that may be provided by different game service providers which allow game players to access a wide range of network-based game engine applications based on different game platforms. Different game client applications can be installed on the computer devices to run specific games supported by the game platforms of the corresponding game engine applications. Moreover, a single game server or a single game engine application can simultaneously support one or many game client applications. 

1. A network-based game system, comprising: a load balancer configured to receive a first request and a second request from a game client application running on a computer device, wherein the first request comprises game logic information and the second request comprises persistent game-state information; a plurality of game servers in connection with the load balancer, wherein each of the game servers stores a game engine application configured to produce a first response to the first request; and a game-system-interface (GSI) server in connection with the plurality of game servers, wherein the GSI stores a GSI program configured to produce a second response to the second request.
 2. The network-based game system of claim 1, wherein the load balancer is configured to communicate with the computer device in a persistent network connection.
 3. The network-based game system of claim 1, wherein the load balancer is configured to communicate with the plurality of game servers in persistent network connections.
 4. The network-based game system of claim 1, wherein the load balancer is configured to route the first request or the second request to a game sever in accordance with the status of the plurality of the game servers.
 5. The network-based game system of claim 1, wherein the GSI server is configured to communicate with the plurality of game servers non-persistent network connections.
 6. The network-based game system of claim 1, wherein at least one of the plurality of game servers is configured to receive the second request and to send a third request to the GSI server in response to the second request.
 7. The network-based game system of claim 6, wherein the at least one of the plurality of game servers is configured to receive a third response from the GSI server in response to the second request and send the second response to the computer device in response to the third response.
 8. The network-based game system of claim 1, wherein the first request comprises one or more of game animation information, game statistics, or game chats.
 9. The network-based game system of claim 1, wherein the second request comprises one or more of a user's account information, user identification, a user's game scores, session identification, game room information, a user's game currency or game credits, an inventory for a user's asset, or a user's buddies list.
 10. The network-based game system of claim 1, further comprising a data base in communication with the GSI server.
 11. The network-based game system of claim 10, wherein the GSI program is configured to update information in the data base or retrieve information from the database in response to the second request.
 12. The network-based game system of claim 1, wherein the game engine program or the GSI program is configured to send a message to authenticate identification associated with a game client application.
 13. The network-based game system of claim 12, wherein the identification includes user identification, game session identification, or game room identification.
 14. The network-based game system of claim 1, wherein the game engine application is configured to communicate with the game client application in encrypted serialized messages.
 15. A network-based game system, comprising: a load balancer configured to receive a first request from a game client application running on a computer device wherein the first request comprises game logic information: a plurality of game servers in persistent network connections with the load balancer, wherein each of the game servers stores a game engine application configured to produce a first response to the first request and to produce a second request, wherein the second request comprises persistent game-state information; and a game-system-interface (GSI) server in non-persistent network connections with the plurality of game servers, wherein the GSI stores a GSI program configured to produce a second response to the second request.
 16. The network-based game system of claim 15, wherein the load balancer is configured to route the first request to a game sever in accordance with the status of the plurality of the game servers.
 17. The network-based game system of claim 1, wherein at least one of the plurality of game servers is configured to receive the second request and to pass the second request to the GSI server.
 18. The network-based game system of claim 1, wherein the at least one of the plurality of game servers is configured to receive the second response from the GSI server and send the second response to the computer device.
 19. The network-based game system of claim 15, further comprising a data base in communication with the GSI server, wherein the GSI program is configured to update information in the data base or retrieve information from the database in response to the second request.
 20. The network-based game system of claim 15, wherein the game engine program or the GSI program is configured to send a message to authenticate identification associated with a game client application, wherein the identification includes user identifications game session identification, or game room identification.
 21. The network-based game system of claim 15, wherein the game engine application is configured to communicate with the game client application in a persistent network connection with the load balancer.
 22. A method of providing a game over a computer network, comprising: receiving a first request and a second request by a load balancer from a game client application running on a computer device in a persistent network connection with the load balancer wherein the first request comprises game logic information and the second request comprises persistent game-state information; producing a first response to the first request by a game engine application running on one of a plurality of game servers, wherein the plurality of game servers are in persistent network connections with the load balancer; and producing a second response to the second request by a GSI program running on a game-system-interface (GSI) server.
 23. The method of claim 22, further comprising routing the first request or the second request by the load balancer to a game sever in accordance with the status of the plurality of the game servers.
 24. The method of claim 22, wherein the GSI server is in non-persistent network connections with the plurality of game servers.
 25. The method of claim 22, further comprising: receiving the second response by the at least one of the plurality of game servers from the GSI server, and sending the second response from the at least one of the plurality of game servers to the computer device.
 26. The method of claim 22, further comprising: updating information in a data base or retrieving information from the database in response to the second request.
 27. The method of claim 22, further comprising: authenticating an identification associated with a game client application by the game engine application, wherein the identification includes user identification, game session identification or game room identification. 